# View edit history of a post

Retrieves the complete edit history of a post, showing all versions from creation to current state. Each edit includes the text, media, mentions, and timestamp of the change. Useful for transparency and tracking post modifications over time.

Endpoint: GET /api/v1/posts/{postId}/edits
Version: 1.0
Security: 

## Path parameters:

  - `postId` (string, required)
    UUID with type prefix
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

## Query parameters:

  - `htmlContent` (any)
    Returns text as html if true or original text if false. Applicable only to local posts and users. Default is true.

## Response 200 fields (application/json):

  - `id` (string, required)
    UUID with type prefix
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `text` (string, required)

  - `summary` (string,null, required)

  - `sensitive` (boolean,null, required)

  - `uploads` (array, required)

  - `uploads.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `uploads.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `uploads.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `uploads.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `uploads.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `uploads.meta` (object)
    Meta data

  - `uploads.meta.blurhash` (string,null)

  - `uploads.meta.name` (string,null)

  - `uploads.meta.altText` (string,null)

  - `uploads.size` (integer, required)
    Size in bytes of all the files in this upload

  - `uploads.files` (array, required)
    List of all the files this upload has

  - `uploads.files.uri` (string,null, required)
    Full url of the file

  - `uploads.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `uploads.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `uploads.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `uploads.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `uploads.files.meta.duration` (number,null)
    Video duration in seconds

  - `uploads.files.meta.width` (integer,null)
    Media width

  - `uploads.files.meta.height` (integer,null)
    Media height

  - `uploads.files.meta.codec` (string,null)
    Video codec

  - `uploads.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `uploads.files.size` (integer, required)
    File size in bytes

  - `uploads.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `uploads.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `uploads.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `uploads.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `uploads.error` (string,null)
    Upload processing error

  - `uploads.cached` (boolean)
    true if cached

  - `uploads.logs` (string,null)
    Logs

  - `uploads.remote` (boolean)
    true if this upload is remote

  - `uploads.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `uploads.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `mentions` (array, required)

  - `pollOptions` (array, required)

  - `createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `card` (object,null)
    Link preview card for displaying metadata about an external URL embedded in a post

  - `card.url` (string,null, required)
    URL being referenced

  - `card.title` (string,null, required)
    Title of the linked resource

  - `card.description` (string,null, required)
    Description of the linked resource

  - `card.icon` (string,null, required)
    Favicon URL

  - `card.image` (string,null, required)
    Preview image URL

  - `card.imageAlt` (string,null, required)
    Alt text for the preview image

  - `card.publisher` (object,null, required)
    Information about the website/provider

  - `card.publisher.name` (string,null, required)

  - `card.publisher.url` (string,null, required)

  - `card.publisher.logo` (string,null)

  - `card.publisher.type` (string,null)

  - `card.oembedHtml` (string,null)
    HTML snippet to embed the link (from oEmbed), e.g., an iframe

  - `card.createdAt` (string, required)
    When the card data was fetched/created
    Example: "2022-03-10T16:15:50Z"

  - `card.expiresAt` (string,null, required)
    When the card data should be considered stale
    Example: "2022-03-10T16:15:50Z"

  - `emojis` (array,null)

  - `emojis.shortcode` (string, required)

  - `emojis.category` (string,null, required)

  - `emojis.url` (string, required)

  - `emojis.staticUrl` (string, required)

  - `emojis.visibleInPicker` (boolean, required)

  - `ownerType` (string, required)
    Owner types for posts and drafts:
      * USER - user's channel (personal or group channel)
      * EVENT - event (personal or group)

       POST OWNER: 
      - Personal channel
          - userId = author
          - ownerId = userId (Type.USER)
          - ownerType = USER
          - groupId = null
      - Personal event
          - userId = author
          - ownerId = eventId (Type.EVENT)
          - ownerType = EVENT
          - groupId = null
      - Group channel
          - userId = author
          - ownerId = channel userId (Type.GROUP_CHANNEL, gc_ prefix)
          - ownerType = USER
          - groupId = groupId
      - Group event
          - userId = author
          - ownerId = eventId (Type.EVENT)
          - ownerType = EVENT
          - groupId = groupId
    Enum: "USER", "EVENT"

  - `kind` (string)
    Enum: "Note", "Article"

  - `mediaType` (string)
    Enum: "TEXT_PLAIN", "MARKDOWN"

## Response 403 fields (application/json):

  - `errorCode` (string, required)
    Error code

  - `message` (string, required)
    Error message

  - `docUrl` (string)
    Link to documentation

## Response 404 fields (application/json):

  - `errorCode` (string, required)
    Error code

  - `message` (string, required)
    Error message

  - `docUrl` (string)
    Link to documentation


